Úloha 3.
Na súťaži v programovaní žiaci 7.A dostali úlohu, aby naplnili nádobu vodou. Nevedia aká veľká je táto nádoba, ale vedia, že nemá viac ako 100l. Na jej plnenie, majú k dispozícii rôzne veľké nádoby. Od 1 až po 100l. Majú napísať program, ktorý čo najrýchlejšie naplní danú nádobu a potom zverejní veľkosť nádoby. Vytvorili nasledujúcu dvojicu programov. Vašou úlohou je rozhodnúť, či takto navrhnutá dvojica programov bude fungovať správane.
RCX1
RCX2
- Najprv si však musíme uvedomiť načo slúžia jednotlivé kontajnery. Modrý kontajner predstavuje náhodné množstvo vody, ktoré chceme priliať do nádoby. Žltý kontajner predstavuje množstvo vody, ktoré sme už do nádoby naliali. A nakoniec červený kontajner. Ten predstavuje hornú hranicu generovania náhodného čísla. To znamená, že ak už som do nádoby naliala 50 litrov vody, tak v ďalších pokusoch sa už nemusím snažiť naliať do nádoby 52 litrov vody. Lebo viem, že aj tak sa mi tam nevojdú.
- Ak sa naplní nádoba, teda hodnota v modrom kontajnery sa rovná hodnote v červenom kontajneri, tak sa pošle správa s hodnotou 1 a o chvíľu potom, správa s hodnotou 101. Program skončí.
- RCX1 má v sebe jednu chybu.Keďže viem načo slúžia jednotlivé kontajnery, tak ju hneď vidíme. Pri výpise objemu nádoby (žltý kontajner), predsa nebudeme vypisovať o koľko je nádoba menšia od jej maximálneho objemu (červený kontajner).
- Chyba v programe RCX2 je iného typu. V programe nastane logická chyba. Problém je v príkaze vetvenia. Ak nastane rovnosť v programe RCX2, tak sa pošle správa s hodnotou 1. Bezprostredne po tomto poslaní správy, je poslaná ďalšia s hodnotou 101.
-
Zatiaľ v programe RCX1 sa priráta hodnota do žltého kontajnera. Znamená to, že ešte nie je naplnený, lebo prišla správa s hodnotou 1. Kým prebieha generovanie ďalšieho čísla, tak príde správa s hodnotou 101. Tú však prvá kocka nezaregistruje, lebo ju nečaká. Keď program príde k príkazu čakania na správu, tak bude čakať, až kým kocku nevypneme, lebo program v druhej kocke už dávno skončil a nemá jej byť odkiaľ doručená správa.
- Opravené programy vyzerajú takto:
RCX1
RCX1
|